home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 February / PCWorld_2004-02_cd.bin / software / vyzkuste / jaknavideo / jaknavideo.exe / zp320pro-trial.exe / DVDGraph / -- Sample Graph with Building Notes.dvdgraph next >
Text File  |  2002-12-29  |  6KB  |  112 lines

  1. // This file is used for the manual construction of DVD FilterGraphs.
  2. // This is a somewhat complex issue, you have been warned.
  3. //
  4. // The Functions:
  5. //
  6. // DefineFilter(FileName)
  7. //   - Using this function you can define which filters are used by the Graph and
  8. //     can later be registered/unregistered through the user interface.
  9. //     DO NOT specify paths, Zoom Player does a system-wide scan for these files.
  10. //
  11. // LoadFilter(FilterID,FilterName)
  12. //   - You can get the FilterID string by loading the filter in graph edit
  13. //     and saving the result to an XML file (File -> Save as XML).  Make sure
  14. //     you copy it complete, along with the {} chars.
  15. //     The FilterName is a name you assign to the filter.  I recommend using
  16. //     the name as it's listed by GraphEdit.
  17. //
  18. // ConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
  19. //   - The Source and Destination filter names are the names you used with the LoadFilter
  20. //     function.  The Pin names can be found by viewing an XML exported filter graph
  21. //     using GraphEdit (note: the pin names as they appear within GraphEdit itself
  22. //     are incorrect!).
  23. //
  24. // IndirectConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
  25. //   - This function is similar to the ConnectPin function except that it allows you to
  26. //     connect pins with missing filters in between them.  For example, you don't really know
  27. //     which Audio/Video Codec an AVI file uses, so ... By Indirectly connecting the AVI Splitter
  28. //     "Video->Out" pin with the Video Renderer filter "Video->In", the video codec is derived
  29. //     automatically.
  30. //
  31. // SetFilterSync(FilterName)
  32. //   - Using this function, you can set a specific filter as the filter that control the
  33. //     Audio/Video Synchronization.  Not all filters can be set as the Sync filters.  Usually
  34. //     the Audio filters are the ones in control of synchronization.
  35. //     Use this function as the last function in the graph.
  36. //
  37. // UseSystemClock
  38. //   - When used, a System Clock is created to maintain sync.  This may cure some microstutter
  39. //     issues, but may lead to audio desync.
  40. //
  41. //
  42. // Tips:
  43. //
  44. // 1. I recommend using the same filter names as listed on GraphEdit.
  45. // 2. Make sure you don't have any typos when connecting the filters.
  46. // 3. Make sure to load the filters before connecting the pins.
  47. // 4. The order of connection can be important.
  48. // 5. Having GraphEdit open while trying create a graph will cause it to fail!
  49. // 6. Make sure that the Overlay Mixer filter is named "Overlay Mixer" or you'll
  50. //    have issues with getting Transparent OSD to work.
  51. // 7. Same thing for the Video Renderer, make sure it's labeled as "Video Renderer".
  52. // 8. Make your life easier by using the Conversion program I wrote to convert
  53. //    GraphEdit's exported XML files into a Zoom Player FilterGraph file.  You can
  54. //    get it here: http://www.inmatrix.com/files/xml2zoom_download.shtml
  55. //
  56. //
  57. // Sample "FilterID":
  58. //
  59. // {9BC1B780-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Audio Decoder (PowerDVD)
  60. //
  61. // {9BC1B781-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Video/SP Decoder (PowerDVD)
  62. //
  63. // {3D5455E5-D8E8-4B4C-84AF-4703C5542042} - Cyberlink Audio Effect
  64. //
  65. //
  66. // This example shows you how to use the Cyberlink 4.0 filters to render
  67. // a DVD graph.  This setup should be the same as letting DirectShow render
  68. // the graph itself.  I built this graph by first setting it up in Graph Edit
  69. // and then after making sure it works, I converted it to the example below.
  70. //
  71. // Here's an image of how this graph looks under GraphEdit:
  72. // http://www.inmatrix.com/pictures/misc/cyberlink_graph.gif
  73. //
  74.  
  75. # Define our filter files:
  76. DefineFilter(clvsd.ax)
  77. DefineFilter(claud.ax)
  78.  
  79. # Load all our filters into the Graph
  80. LoadFilter({70E102B0-5556-11CE-97C0-00AA0055595A},Video Renderer)
  81. LoadFilter({79376820-07D0-11CF-A24D-0020AFD79767},Default DirectSound Device)
  82. LoadFilter({CD8743A1-3736-11D0-9E69-00C04FD7C15B},Overlay Mixer)
  83. LoadFilter({9BC1B780-85E3-11D2-98D0-0080C84E9C39},Cyberlink Audio Decoder)
  84. LoadFilter({6E8D4A20-310C-11D0-B79A-00AA003767A7},Line21 Decoder)
  85. LoadFilter({9BC1B781-85E3-11D2-98D0-0080C84E9C39},Cyberlink Video/SP Decoder)
  86. LoadFilter({9B8C4620-2C1A-11D0-8493-00A02438AD48},DVD Navigator)
  87.  
  88.  
  89. # Connect the DVD Navigator Video-Out Pin to the Cyberlink Video decoder Video-In pin.
  90. ConnectPin(DVD Navigator,Video,Cyberlink Video/SP Decoder,Video In)
  91.  
  92. # Connect the DVD Navigator AC3-Out pin (audio) to the Cyberlink Audio decoder Audio-in pin.
  93. ConnectPin(DVD Navigator,AC3,Cyberlink Audio Decoder,In)
  94.  
  95. # Connect the DVD Navigator SubPicture-Out pin (subtitles) to the Cyberlink Video SubPicture-In pin.
  96. ConnectPin(DVD Navigator,SubPicture,Cyberlink Video/SP Decoder,SubPicture In)
  97.  
  98. # Connect the Cyberlink Audio decoder Audio-Out pin to the Default DirectSound Device Audio Renderer
  99. ConnectPin(Cyberlink Audio Decoder,Out,Default DirectSound Device,Audio Input pin (rendered))
  100.  
  101. # Connect the Cyberlink Video decoder to the Overlay Mixer
  102. ConnectPin(Cyberlink Video/SP Decoder,Video Out,Overlay Mixer,Input0)
  103.  
  104. # Connect the Cyberlink Video decoder to the Line21 decoder (closed captions)
  105. ConnectPin(Cyberlink Video/SP Decoder,~Closed Caption Out,Line21 Decoder,In)
  106.  
  107. # Connect the Line21 decoder to the Overlay Mixer
  108. ConnectPin(Line21 Decoder,Out,Overlay Mixer,Input2)
  109.  
  110. # Connect the Overlay Mixer to the video renderer
  111. ConnectPin(Overlay Mixer,Output,Video Renderer,In)
  112.